package com.telit.uav.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.telit.uav.dto.CommUavReportInfoDTO;
import com.telit.uav.dto.UpdateUavLanAndLonDTO;
import com.telit.uav.entity.CommUav;
import com.telit.uav.entity.CommUavModel;
import com.telit.uav.entity.CommUavProducter;
import com.telit.uav.entity.CommUavReportInfo;

import java.util.List;


/**
 * @author zhouyu
 * @description 无人机管理接口
 */
public interface UavManagerService {


    //添加无人机厂商
    Long addUavDeviceProducter(CommUavProducter commUavProducter);

    Long addUavDeviceModel(CommUavModel commUavModel);

    void deleteUavDeviceModel(Long id);

    /**
     * 修改无人机在离线状态
     *
     * @param uavCode
     * @param forestkeeperId
     * @param isConnect
     */
    void changeStatus(String uavCode, Long forestkeeperId, Integer isConnect, String longitude, String latitude);

    /**
     * 增
     *
     * @param commUav
     */
    void addUavDevice(CommUav commUav);

    /**
     * 删
     *
     * @param id
     */
    void deleteById(Long id);

    /**
     * 改
     *
     * @param commUav
     */
    void updateById(CommUav commUav);

    /**
     * 开始或结束巡护成功
     *
     * @param trackId
     * @param uavCode
     * @param startOrEnd
     */
    void startOrEndPatrol(String uavCode, String startOrEnd, String trackId);

    /**
     * app端调用,修改无人机是否飞行中
     *
     * @param uavCode
     * @param isFlying
     */
    void modifyIsFlying(String uavCode, Integer isFlying);

    /**
     * @description: 根据状态查询无人机列表
     * @author ck
     * @date: 2022/4/23 13:36
     */
    List<CommUav> queryByHealthStatusAndName(Integer healthStatus, String name);


    /**
     * @description: 查询无人机故障维修上报记录
     * @author ck
     * @date: 2022/4/24 9:24
     */
    IPage<CommUavReportInfo> queryReportList(CommUavReportInfoDTO commUavReportInfoDTO);

    List<CommUavProducter> findUavDeviceProducter(String producter);

    void updateUavLonAndLan(UpdateUavLanAndLonDTO updateUavLanAndLonDTO);

}
